home *** CD-ROM | disk | FTP | other *** search
/ Penthouse Interactive Virtual Photo Shoot 1 / Penthouse Interactive Virtual Photo Shoot - Volume 1.iso / mac / SETUP / SETUP.MST < prev    next >
Text File  |  1994-01-05  |  13KB  |  373 lines

  1.  
  2. rem ---------------------------------------------------------------------
  3. rem
  4. rem SETUP.MST    - MSSETUP Installation Script
  5. rem
  6. rem                Version 1.0
  7. rem
  8. rem                (c) 1993 San Francisco Canyon Co. All Rights Reserved.
  9. rem
  10. rem ---------------------------------------------------------------------
  11.  
  12.  
  13. rem Required includes to interface with MSSETUP DLL's
  14. rem -------------------------------------------------
  15. '$INCLUDE 'setupapi.inc'
  16. '$INCLUDE 'msdetect.inc'
  17.  
  18.  
  19. rem Dialog box id's
  20. rem ---------------
  21. rem Note: If MSSETUP were really smart, we could use the
  22. rem #defines in DIALOGS.HR. Instead, we must manually
  23. rem keep them in step
  24. rem ----------------------------------------------------
  25.     CONST DESTPATH      = 300          ''Gets destination path
  26.     CONST EXITQUIT      = 600          ''Exits on user request
  27.     CONST EXITSUCCESS   = 700          ''Exits when install is done
  28.     CONST TOOBIG        = 6300         ''Not enough space on target disk error
  29.     CONST BADPATH       = 6400         ''Bad destination path error
  30.     CONST BADWINDOWS    = 6500         ''Wrong Windows release
  31.     CONST EXITFAILURE   = 6600         ''Exits on error
  32.  
  33.  
  34. rem String id's
  35. rem -----------
  36. rem Note: If MSSETUP were really smart, we could use the
  37. rem #defines in DIALOGS.HR. Instead, we must manually
  38. rem keep them in step
  39. rem ----------------------------------------------------
  40.     CONST STR_UTILITY   = 1024         ''Utility
  41.     CONST STR_GROUP     = 1025         ''Program Manager group
  42.     CONST STR_TITLE     = 1026         ''Installer Title
  43.     CONST STR_MSG1      = 1027         ''Version error message part 1
  44.     CONST STR_MSG2      = 1028         ''Version error message part 2
  45.     CONST STR_WARNING   = 1029         ''Warning
  46.     CONST STR_README    = 1030         ''Read Me
  47.  
  48.  
  49. rem Miscellaneous Constants
  50. rem -----------------------
  51.     CONST NOLOGO = 1                   ''Dummy NULL bitmap (must be 1)
  52.     CONST LOGO = 2                     ''Background bitmap
  53.     CONST MOVIE = 2                    ''Movie placeholder bitmap
  54.     CONST NOSPACE = 1                  ''No space to complete install
  55.     CONST INSTALLOK = 2                ''Install completed OK
  56.     CONST INSTALLFAILED =3             ''Install failed for some reason
  57.  
  58.  
  59. rem Global Variables
  60. rem ----------------
  61.     GLOBAL SOURCE$                     ''Source directory
  62.     GLOBAL DEST$                       ''Default destination directory
  63.     GLOBAL CUIDLL$                     ''User interface DLL
  64.     GLOBAL SETUPPATH$                  ''Setup destination path
  65.     GLOBAL HELPPROC$                   ''Help dialog procedure
  66.     GLOBAL EXTRACOSTS$                 ''List of extra costs to add per drive
  67.     GLOBAL APPNEEDS$                   ''Disk space costs per drive
  68.     GLOBAL SECTIONKEY$                 ''INF file section key
  69.     GLOBAL SUCCESS%                    ''Installation completion code
  70.     GLOBAL EXENAME$                    ''EXE name
  71.     GLOBAL SERIESID$                   ''Series ID
  72.     GLOBAL INIFILE$                    ''.INI filename
  73.  
  74.  
  75. rem Initialize global vriables
  76. rem --------------------------
  77.     SETUPPATH$      = "C:\PHI"
  78.     SOURCE$         = GetSymbolValue("STF_SRCDIR")
  79.     DEST$           = SETUPPATH$
  80.     SUCCESS%        = INSTALLFAILED
  81.     EXTRACOSTS$     = "ExtraCosts"
  82.     APPNEEDS$       = "AppNeeds"
  83.     SECTIONKEY$     = "SectionKey"
  84.  
  85.     FOR i% = 1 TO 26 STEP 1
  86.         AddListItem EXTRACOSTS$, "16384"
  87.     NEXT i%
  88.  
  89.  
  90. rem Get name of localized user interface dialogs
  91. rem --------------------------------------------
  92.     CUIDLL$ = "setup.DLL"
  93.  
  94.  
  95. rem Subroutines and Functions
  96. rem -------------------------
  97.     DECLARE FUNCTION Install AS INTEGER
  98.     DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  99.     DECLARE FUNCTION GetDLLVersion LIB "setup.dll" (szDLL$) AS INTEGER
  100.     DECLARE FUNCTION HideCriticalDirectory LIB "setup.dll" (szDir$) AS INTEGER
  101.     DECLARE FUNCTION GetResourceString LIB "setup.dll" (szResource$, idString%) AS INTEGER
  102.     DECLARE FUNCTION StartCustomSetup LIB "setup.dll" (hinst%, hwnd%) AS INTEGER
  103.     DECLARE FUNCTION StopCustomSetup LIB "setup.dll" (hinst%, hwnd%) AS INTEGER
  104.  
  105.  
  106. rem Initialize custom setup logic
  107. rem -----------------------------
  108.     SetBitmap CUIDLL$, NOLOGO
  109.     i% = GetResourceString (CUIDLL$, STR_TITLE)
  110.     SetTitle GetSymbolValue ("ResourceString")
  111.     i% = StartCustomSetup (HinstFrame(), HwndFrame ())
  112.     i% = SetBeepingMode(1)
  113.  
  114.  
  115. rem Make sure that we are running on Windows 3.1 or better
  116. rem ------------------------------------------------------
  117.     IF GetWindowsMajorVersion() < 3 THEN
  118.        sz$ = UIStartDlg(CUIDLL$, BADWINDOWS, "FInfo0DlgProc", 0, "")
  119.        UIPop 1
  120.        GOTO CLEANUP
  121.     END IF
  122.  
  123.     IF (GetWindowsMajorVersion() = 3) AND (GetWindowsMinorVersion() < 10) THEN
  124.        sz$ = UIStartDlg(CUIDLL$, BADWINDOWS, "FInfo0DlgProc", 0, "")
  125.        UIPop 1
  126.        GOTO CLEANUP
  127.     END IF
  128.  
  129.  
  130. rem Make sure that we are running on a 386 or better
  131. rem ------------------------------------------------
  132.     IF GetWinFlags() AND 2 THEN
  133.        sz$ = UIStartDlg(CUIDLL$, BADWINDOWS, "FInfo0DlgProc", 0, "")
  134.        UIPop 1
  135.        GOTO CLEANUP
  136.     END IF
  137.  
  138.  
  139. rem Find and read the .INF file.
  140. rem -------------------------------------------------------------------
  141.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  142.  
  143.     IF szInf$ = "" THEN
  144.        szTemp$ = GetSymbolValue("STF_SRCDIR")
  145.        szInf$ = szTemp$ + "CD.INF"
  146.     END IF
  147.  
  148.     ReadInfFile szInf$
  149.  
  150.  
  151. rem Which PHI series are we installing?
  152. rem -------------------------------------------------------------------
  153.     IF DoesFileExist(MakePath(GetSymbolValue("STF_SRCDIR"), "DEMO.ID"), femExists) = 1 THEN
  154.        EXENAME$ = "demo.exe"
  155.        SERIESID$ = "Demo"
  156.        INIFILE$ = "demo.ini"
  157.     ELSEIF DoesFileExist(MakePath(GetSymbolValue("STF_SRCDIR"), "1.ID"), femExists) = 1 THEN
  158.        EXENAME$ = "phi1.exe"
  159.        SERIESID$ = "#1"
  160.        INIFILE$ = "phi1.ini"
  161.     ELSEIF DoesFileExist(MakePath(GetSymbolValue("STF_SRCDIR"), "2.ID"), femExists) = 1 THEN
  162.        EXENAME$ = "phi2.exe"
  163.        SERIESID$ = "#2"
  164.        INIFILE$ = "phi2.ini"
  165.     ELSEIF DoesFileExist(MakePath(GetSymbolValue("STF_SRCDIR"), "3.ID"), femExists) = 1 THEN
  166.        EXENAME$ = "phi3.exe"
  167.        SERIESID$ = "#3"
  168.        INIFILE$ = "phi3.ini"
  169.     END IF
  170.  
  171.  
  172. rem Get the destination path; if it's bad, we display an error
  173. rem ----------------------------------------------------------------
  174. GETPATH:
  175.     SetSymbolValue "EditTextIn", DEST$
  176.     SetSymbolValue "EditFocus", "END"
  177.  
  178. GETPATHL1:
  179.     sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", 0, "")
  180.  
  181.     DEST$ = GetSymbolValue("EditTextOut")
  182.  
  183.     IF sz$ = "CONTINUE" THEN
  184.        IF IsDirWritable(DEST$) = 0 THEN
  185.           GOSUB BADPATH
  186.           GOTO GETPATHL1
  187.        END IF
  188.  
  189.        IF DoesFileExist(MakePath(DEST$, EXENAME$), femExists) = 1 THEN
  190.           i% = GetResourceString (CUIDLL$, STR_MSG1)
  191.           szError$ = DEST$ + GetSymbolValue ("ResourceString")
  192.           i% = GetDLLVersion(MakePath(DEST$, EXENAME$))
  193.           szVersion$ = GetSymbolValue ("VersionString")
  194.           szError$ = szError$ + szVersion$
  195.           i% = GetResourceString (CUIDLL$, STR_MSG2)
  196.           szError$ = szError$ + GetSymbolValue ("ResourceString")
  197.           i% = GetResourceString (CUIDLL$, STR_WARNING)
  198.           szCaption$ = GetSymbolValue ("ResourceString")
  199.           i% = DoMsgBox(szError$, szCaption$, 20)
  200.           UIPop 1
  201.           IF i% = 7 THEN
  202.              GOTO GETPATHL1
  203.           END IF
  204.        END IF
  205.  
  206.        UIPop 1
  207.  
  208.     ELSEIF sz$ = "REACTIVATE" THEN
  209.        GOTO GETPATHL1
  210.  
  211.     ELSE
  212.        GOSUB ASKQUIT
  213.        GOTO GETPATH
  214.  
  215.     END IF
  216.  
  217.  
  218. rem Perform actual installation
  219. rem ---------------------------
  220. INSTALL:
  221.     SUCCESS% = Install
  222.  
  223.     IF SUCCESS% = NOSPACE THEN
  224.        GOSUB TOOBIG
  225.        GOTO GETPATH
  226.     END IF
  227.  
  228.  
  229. rem When done, issue dialog
  230. rem -----------------------
  231. QUIT:
  232.     IF SUCCESS% = INSTALLOK THEN
  233.        sz$ = UIStartDlg(CUIDLL$, EXITSUCCESS, "FInfo0DlgProc", 0, "")
  234.     ELSE
  235.        sz$ = UIStartDlg(CUIDLL$, EXITFAILURE, "FInfo0DlgProc", 0, "")
  236.     END IF
  237.     UIPop 1
  238.  
  239.  
  240. rem Clean up all processing
  241. rem -----------------------
  242. CLEANUP:
  243.     i% = StopCustomSetup (HinstFrame(), HwndFrame ())
  244.  
  245.     END
  246.  
  247.  
  248. rem ASKQUIT: The user requested quit; does (s)he really want to?
  249. rem ------------------------------------------------------------
  250. ASKQUIT:
  251.     sz$ = UIStartDlg(CUIDLL$, EXITQUIT, "FInfoDlgProc", 0, "")
  252.     UIPop 1
  253.     IF sz$ = "CONTINUE" THEN
  254.        RETURN
  255.     END IF
  256.     GOTO CLEANUP
  257.  
  258.  
  259. rem BADPATH: The user entered an invalid destination directory
  260. rem ----------------------------------------------------------
  261. BADPATH:
  262.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  263.     IF sz$ = "REACTIVATE" THEN
  264.        GOTO BADPATH
  265.     END IF
  266.     UIPop 1
  267.  
  268.     RETURN
  269.  
  270.  
  271. rem TOOBIG: The source files won't fit on the requested destination disk
  272. rem --------------------------------------------------------------------
  273. TOOBIG:
  274.     sz$ = UIStartDlg(CUIDLL$, TOOBIG, "FInfo0DlgProc", 0, "")
  275.     IF sz$ = "REACTIVATE" THEN
  276.        GOTO TOOBIG
  277.     END IF
  278.     UIPop 1
  279.  
  280.     RETURN
  281.  
  282.  
  283. rem Install: Perform actual installation
  284. rem ------------------------------------
  285. FUNCTION Install STATIC AS INTEGER
  286.  
  287.     rem Create the destination directory
  288.     rem --------------------------------
  289.         CreateDir DEST$, cmoNone
  290.  
  291.     rem Build the copy list
  292.     rem -------------------
  293.         AddSectionFilesToCopyList "Files", SOURCE$, DEST$
  294.         AddSectionFilesToCopyList "QTIM", SOURCE$, DEST$
  295.         AddSectionFilesToCopyList "Pictures", SOURCE$, MakePath(DEST$, "pictures")
  296.         AddSectionFilesToCopyList "Sounds", SOURCE$, MakePath(DEST$, "sounds")
  297.  
  298.     rem Check that we have enough free space to perform the install
  299.     rem -----------------------------------------------------------
  300.         ListSym$ = APPNEEDS$
  301.         StillNeed& = GetCopyListCost(EXTRACOSTS$, ListSym$, "")
  302.  
  303.         drive$ = MID$(DEST$, 1, 1)
  304.         ndrive% = ASC(ucase$(drive$)) - ASC("A") + 1
  305.         cost& = VAL(GetListItem(APPNEEDS$, ndrive%))
  306.         free& = GetFreeSpaceForDrive(drive$)
  307.  
  308.         IF cost& >= free& THEN
  309.            Install = NOSPACE
  310.            EXIT FUNCTION
  311.         END IF
  312.  
  313.     rem Copy all the files from the source to the destination
  314.     rem -----------------------------------------------------
  315.         CopyFilesInCopyList
  316.  
  317.     rem Hide critical directories
  318.     rem -------------------------
  319.         i% = HideCriticalDirectory (MakePath(DEST$, "pictures"))
  320.         i% = HideCriticalDirectory (MakePath(DEST$, "sounds"))
  321.  
  322.     rem Update .INI File
  323.     rem ----------------
  324.         SPLITPATH SOURCE$, drv$, dir$, filename$, ext$
  325.         ini$ = MakePath(DEST$, INIFILE$)
  326.         RemoveIniKey ini$, "PHI", "Photographer", cmoNone
  327.         RemoveIniSection ini$, "Directories", cmoNone
  328.         CreateIniKeyValue ini$, "Directories", "Pictures", MakePath(DEST$, "pictures") + "\" , cmoNone
  329.         CreateIniKeyValue ini$, "Directories", "Sounds", MakePath(DEST$, "sounds") + "\" , cmoNone
  330.         CreateIniKeyValue ini$, "Directories", "Posters", drv$ + "\posters\" , cmoNone
  331.         CreateIniKeyValue ini$, "Directories", "Movies", drv$ + "\movies\" , cmoNone
  332.         CreateIniKeyValue ini$, "Directories", "Pet0", drv$ + "\movies\pet0\" , cmoNone
  333.         CreateIniKeyValue ini$, "Directories", "Pet1", drv$ + "\movies\pet1\" , cmoNone
  334.         CreateIniKeyValue ini$, "Directories", "Pet2", drv$ + "\movies\pet2\" , cmoNone
  335.  
  336.     rem Create a Program Manager group
  337.     rem ------------------------------
  338.         i% = GetResourceString (CUIDLL$, STR_GROUP)
  339.         GROUP$ = GetSymbolValue ("ResourceString")
  340.         CreateProgmanGroup GROUP$, "", cmoNone
  341.         i% = GetResourceString (CUIDLL$, STR_UTILITY)
  342.         CreateProgmanItem GROUP$, GetSymbolValue ("ResourceString") + " " + SERIESID$, MakePath(DEST$,EXENAME$), "", cmoOverwrite
  343.         i% = GetResourceString (CUIDLL$, STR_README)
  344.         CreateProgmanItem GROUP$, GetSymbolValue ("ResourceString"), "write " + MakePath(DEST$,"readme.wri"), "", cmoOverwrite
  345.  
  346.     rem Indicate install completed OK
  347.     rem -----------------------------
  348.         Install = INSTALLOK
  349.  
  350. END FUNCTION
  351.  
  352.  
  353. rem MakePath: Builds path from directory and file
  354. rem ---------------------------------------------
  355. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  356.  
  357.     IF szDir$ = "" THEN
  358.        MakePath = szFile$
  359.  
  360.     ELSEIF szFile$ = "" THEN
  361.        MakePath = szDir$
  362.  
  363.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  364.        MakePath = szDir$ + szFile$
  365.  
  366.     ELSE
  367.        MakePath = szDir$ + "\" + szFile$
  368.  
  369.     END IF
  370.  
  371. END FUNCTION
  372.  
  373.